Static and Dynamic Contract Verifiers For Java
نویسندگان
چکیده
Design By Contract (DBC) is a systematic approach to specifying and implementing object-oriented software systems. DBC has been proved to greatly benefit software development. However, Java does not natively support DBC. We have developed a comprehensive solution to bring DBC into Java. The static and dynamic contract verifier is the most crucial part of the solution. We have developed a toolset support DBC using these two verifiers. This paper presents details of their design and implimentation. The tool used for dynamic contract verifier is ContractChecker, which generates test code into original Java code, thus enables runtime validation. Static contract verification is done by Static Contract Verifier, which uses an automated theorem prover to verify contract.
منابع مشابه
Specifying Languages and Verifying Programs with K http://kframework.org
K is a rewrite-based executable semantic framework for defining languages. The K framework is designed to allow implementing a variety of generic tools that can be used with any language defined in K, such as parsers, interpreters, symbolic execution engines, semantic debuggers, test-case generators, state-space explorers, model checkers, and even deductive program verifiers. The latter are bas...
متن کاملA Software Change Contracts
Software errors often originate from incorrect changes, including incorrect program fixes, incorrect feature updates and so on. Capturing the intended program behavior explicitly via contracts is thus an attractive proposition. In our recent work, we had espoused the notion of “change contracts” to express the intended program behavior changes across program versions. Change contracts differ fr...
متن کاملContracts as a support to static analysis of open systems
Static analysis is a powerful tool to establish various properties of programs. The analysis is often directed by the call graph of the programs (e.g [3]) and thus is not well suited to open object-oriented systems, or sometimes consider that when a method is called, all its parameter escape to any control (e.g. [1]). In this work in progress, we introduce the notion of contract as a support to...
متن کاملOmnibus: A clean language and supporting tool for integrating different assertion-based verification techniques
Omnibus is a new system for the development of reliable ObjectOriented software. It includes a clean language that is superficially similar to Java but removes aspects that particularly complicate verification. Integrated support is provided for run-time assertion checking, extended static checking and full formal verification. The language is supported by a prototype IDE with a type checker, J...
متن کاملProofing: Efficient SSA-based Java Verification
Verification is essential for assuring the integrity of a Java virtual machine when executing untrusted code. Existing verifiers decide whether or not a given bytecode program is safe. In contrast, we introduce the concept of proofing. Proofing does not change the semantics of programs that would have passed the original bytecode verifier. For programs that would have failed verification, our a...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2003